package com.bestcem.xm.common.core.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 资源错误枚举，错误码必须落于200~299之间，包含200和299
 * <p>
 * 处理诸如：资源不存在、请求资源过于频繁、上传资源格式不正确等资源异常。
 *
 * @author ympan <yuming.pan@idiaoyan.com>
 * @version v3.0
 * @date 2021/8/17 18:27
 */
@Getter
@AllArgsConstructor
public enum ResourceErrorCodeEnum implements CommonErrorEnum {

    /**
     * 资源不存在
     */
    NOT_FOUND(201, "资源不存在"),

    /**
     * 请求过于频繁
     */
    TOO_BUSY(202, "请求过于频繁"),

    /**
     * 上传资源格式不正确
     */
    INVALID_FORMAT(203, "上传资源格式不正确"),

    /**
     * 重复操作相同资源
     */
    DUPLICATE(204, "重复操作相同资源"),

    /**
     * mongo写入数据异常
     */
    WRITE_FAIL(205, "mongo写入数据异常"),

    /**
     * 更新操作被拒绝
     */
    UPDATE_FORBID(206, "更新操作被拒绝"),

    /**
     * 没有权限
     */
    PERMISSION_DENY(207, "没有权限"),

    /**
     * 资源状态已变化，当前操作被拒绝
     */
    STATUS_CHANGED(208, "资源状态已变化，当前操作被拒绝"),

    /**
     * 资源被禁用，或者资源状态为无效状态，未启用等
     */
    FORBIDDEN(209, "资源被禁用，或者资源状态为无效状态，未启用等"),

    /**
     * 用户不在组中
     */
    OUT_OF_GROUP(210, "用户不在组中"),

    /**
     * 第三方资源申请失败
     */
    THIRD_PART(211, "第三方资源申请失败"),

    /**
     * 资源被引用无法删除
     */
    DELETE_INHIBIT(212, "资源被引用无法删除"),

    /**
     * 数据不存在
     */
    NO_DATA(213, "数据不存在"),

    /**
     * 图表计算失败
     */
    CHART_FAILED(214, "图表计算失败"),

    /**
     * 图表计算进行中
     */
    CHART_CALCING(215, "图表计算进行中"),

    /**
     * 图表因为使用层级字段而出错
     */
    CHART_ERROR(216, "图表因为使用层级字段而出错"),

    /**
     * 子系统不存在
     */
    SUB_SYSTEM_NOT_FOUND(217, "子系统不存在"),

    /**
     * 资源已存在
     */
    FOUND(218, "资源已存在"),

    /**
     * 缓存不命中
     */
    CACHE_MISSED(219, "缓存不命中"),

    /**
     * 资源数量过多
     */
    TOO_MUCH(220, "资源数量过多"),

    /**
     * 没有相关定制化功能
     */
    NOT_EXISTS_CUSTOM_FUNCTION(221, "没有相关定制化功能"),

    /**
     * 数据不容许删除
     */
    DATA_NOT_ALLOW_DELETE(222, "数据不容许删除"),

    /**
     * 微信绑定用户未找到
     */
    WX_USER_NOT_FOUND(223, "微信绑定用户未找到"),

    /**
     * 微信已绑定用户
     */
    WX_USER_FOUND(224, "微信已绑定用户"),

    /**
     * 当前task正在执行
     */
    TASK_WORKING(225, "当前task正在执行"),

    /**
     * 中台接口不可用
     */
    MIDDLE_NOT_FOUND(226, "中台接口不可用"),

    /**
     * 项目为初始化
     */
    NO_INIT(227, "项目为初始化"),

    /**
     * 账号被锁定
     */
    USER_LOCKED(228, "账号被锁定"),

    /**
     * ticket has deleted
     */
    TICKET_DELETED(229, "ticket has deleted"),

    /**
     * org没有权限
     */
    ORG_FORBIDDEN(230, "org没有权限"),

    /**
     * 达到资源限额
     */
    QUOTA_REACHED(231, "达到资源限额"),

    /**
     * 文件过大
     */
    FILE_TOO_LARGE(233, "文件过大"),

    /**
     * 数据库写入数据异常
     */
    DB_WRITE_FAIL(238, "数据库写入数据异常");

    private final int code;
    private final String msg;

    @Override
    public int getCode() {
        return code;
    }

    @Override
    public String getMsg() {
        return msg;
    }
}
